﻿using System.Collections.Generic;
using System.Reflection;
using AventStack.ExtentReports;
using log4net;
using Ro.Common.RoInterface;
using Ro.Common.RoInterface.UserType;

namespace Ro.Common.RoArgs
{
    /// <summary>
    /// 存放整个RoWarlock需要使用的参数、变量以及自定义类
    /// </summary>
    public class RoPubArgments
    {
        /// <summary>
        /// Pro版本标记符
        /// <para>True为Pro/GUI版本，允许执行循环/迭代测试，运行使用Tcc文件</para>
        /// <para>false为Community版本，不允许执行循环/迭代测试，运行使用Tcc文件</para>
        /// </summary>
        public static bool ProTips;


        /// <summary>
        /// RoLog
        /// </summary>
        public static ILog RoLog = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

        /// <summary>
        /// 预定义ExtentReports
        /// 此LOG是HTML格式的LOG
        /// </summary>
        public static ExtentReports RoExtentReports;

        /// <summary>
        /// 使用自定义的RoTestArgsInfo
        /// 1.存放tcs文件路径（string）
        /// 2.存放tci文件夹路径(string)
        /// </summary>
        public static RoTestArgsInfo RoTestArgsInfo;

        /// <summary>
        /// 使用自定义的GuiTestArgsInfo
        /// </summary>
        public static GuiTestArgsInfo GuiTestArgsInfo;


        /// <summary>
        /// 输出command信息
        /// </summary>
        public static IRoOutputToConsole RoOutputToConsole;


        /// <summary>
        /// 临时log信息
        /// </summary>
        public static TempLogInfo TempLogInfo = new TempLogInfo();


        /// <summary>
        /// 保存系统中已经缓存的所有变量ID和值
        /// </summary>
        public static List<Property> SystemProperties;


        /// <summary>
        /// 测试浏览器驱动路径
        /// </summary>
        public static string BrowserDriverPath;


        /// <summary>
        /// Pro使用，存储整个Tcc文件夹中所有的Tcc信息
        /// </summary>
        public static GuiTccInfo GuiTccInfo;


        /// <summary>
        /// 存放Tci的对应信息的全局List变量
        /// <para>应该存放整个Web/Client的所有Tci信息</para>
        /// </summary>
        public class UseTciInfo
        {
            // todo 重新更改，tciid是key值，不需要多次写入
            /// <summary>
            /// 存放WEB的Tci对应信息
            /// 存放所有的信息，每个RoWeb.ControlUseType就是一个对应一个tci
            /// </summary>
            public static List<RoWeb.ControlUseType> RoWebTci;
        }

    }
}
